package cwinsor.raking.year2014;

import java.util.Map;

/*
 * This is a base class for a single property for a raker
 * The base class is purely abstract, and defines the
 * getIntegerValue and getStringValue methods (which
 * derived classes must implement).
 */
public abstract class PropertyBase implements Comparable<PropertyBase> {

	/*
	 * set the property's value from an input String
	 */
	public abstract void setPropertyValFromString(String string);

	/*
	 * set the map from which a virtual property can compute its value
	 */
	public abstract void setPropertySourcesForVal(Map<PROP_E, PropertyBase> aPropertyMap);

	/*
	 * get a prototype instance of this class
	 */
	public abstract PropertyBase prototype();	

	/*
	 * get value (note the subclass of Object may be used in rendering)
	 */
	public abstract Object getValue();

	/*
	 * get the integer representation
	 */
	public abstract Integer toInteger();

	/*
	 * get the string representation
	 */
	public abstract String toString();

}
